﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Rise.Objetos
{
    class Tiro
    {
        protected Texture2D textura;
        public Vector2 posicao;
        public Vector2 velocidade;
        protected Rectangle origem;
        public Rectangle destino;
        protected bool direita;
        int direcao;
        protected double dx;
        protected double dy;
        protected Rectangle colisao;
        public int dano;
        public bool visivel;
        public bool PowerUpPoder;

        public Rectangle Colisao
        {
            get
            {
                //AJEITAR NUMEROS MAGICOS PORRA
                return new Rectangle((int)posicao.X, (int)posicao.Y, 64, 64);
            }

            set
            {

                colisao = value;

            }

        }

        public Tiro(float posicaoOrigemX, float posicaoOrigemY, Texture2D textura, bool direita, int direcao, MouseState mouse)
        {
            this.visivel = true;
            this.textura = textura;
            this.posicao.X = posicaoOrigemX;
            this.posicao.Y = posicaoOrigemY;
            this.direita = direita;
            this.direcao = direcao;
            this.origem = new Rectangle(0, 0, textura.Width, textura.Height);
            this.destino = new Rectangle(0, 0, origem.Width, origem.Height);

            dx = (double)mouse.X - (double)this.posicao.X;
            dy = (double)mouse.Y - (double)this.posicao.Y;

            this.velocidade.X = (float)Math.Cos(Math.Atan2(dy,dx)) * 7;
            this.velocidade.Y = (float)Math.Sin(Math.Atan2(dy,dx)) * 7;
        }


        public void Update(GameTime gameTime, GameWindow window)
        {

            posicao.X += velocidade.X;
            posicao.Y += velocidade.Y; 
            while (PowerUpPoder)
            {

                this.dano += 50;

            }
            if (!PowerUpPoder)
            {

                this.dano = 50;

            }


        }

        public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            if(visivel)
            spriteBatch.Draw(textura, posicao, Color.White);
        }

        public bool Colidiu(Objetos.Plataforma plataforma)
        {
            if (Colisao.Intersects(plataforma.Colisao))
            {

                return true;

            }
            else
            {

                return false;

            }


        }

        public bool Colidiu(Personagens.Inimigo inimigo)
        {
            if (Colisao.Intersects(inimigo.Colisao))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

    }
}
